package com.java8.function;

import org.junit.Test;

import java.util.ArrayList;
import java.util.List;
import java.util.function.Predicate;

/**
 * @Description: java内置函数接口
 * @Author: whp
 * @Date: 2021-02-08 17:25
 */
public class InnerFunction {

    // 4大核心函数接口
    // cousumer 参数T 消费型接口 无返回值
    // --》对类型T参数应用操作， 方法 void accept


    // Supplier 无入参，返回类型T
    //--》返回实体T ，方法 T get()


    // Function 入参T，返回R
    //--》 对类型T 操作，返回结果R类型。 方法 R apply(T t)


    // Predicate 入参T 返回boolean
    //--》 确定类型是否满足约束，返回boolean  ，方法 boolean test（T t）
    public static List<String> filterString(List<String> list, Predicate<String >pre){
        List<String> result=new ArrayList<>();
        for (String str:list  ) {
            if (pre.test(str)){
                result.add(str);
            }
        }
        return result;
    }


    @Test
    public void testPre(){
        List<String> strings=new ArrayList<>();
        strings.add("123");
        strings.add("123ad");
        strings.add("ffff");

        List<String>result= filterString(strings, str->{
            if(str.startsWith("123")){
                return true;
            }
            return false;
        });

        System.out.println(result);

    }
}
